package com.hejie.videoservice.service;

import java.io.InputStream;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public interface S3Service {
    /**
     * 上传文件到S3
     * @param inputStream 文件输入流
     * @param key S3对象键
     * @param contentType 文件内容类型
     * @param metadata 自定义元数据
     * @return 文件URL
     */
    String uploadFile(InputStream inputStream, String key, String contentType, Map<String, String> metadata);

    /**
     * 生成预签名上传URL
     * @param key S3对象键
     * @param contentType 文件内容类型
     * @param expirationTime 过期时间
     * @param unit 时间单位
     * @return 预签名URL
     */
    String generatePresignedUploadUrl(String key, String contentType, long expirationTime, TimeUnit unit);

    /**
     * 生成预签名下载URL
     * @param key S3对象键
     * @param expirationTime 过期时间
     * @param unit 时间单位
     * @return 预签名URL
     */
    String generatePresignedDownloadUrl(String key, long expirationTime, TimeUnit unit);

    /**
     * 从S3删除文件
     * @param key S3对象键
     * @return 是否删除成功
     */
    boolean deleteFile(String key);

    /**
     * 获取文件元数据
     * @param key S3对象键
     * @return 元数据Map
     */
    Map<String, String> getFileMetadata(String key);
}